package com.wind.taobao.api.trade.item.convert
{
	import com.wind.taobao.api.trade.item.model.TaobaoItem;
	import com.wind.taobao.api.trade.user.convert.LocationConvert;
	import com.wind.taobao.core.util.TaobaoConstants;
	import com.wind.taobao.core.util.TaobaoUtils;

	import mx.collections.ArrayCollection;


	/**
	 * Item转换器
	 * @author fxy
	 */
	public class ItemConvert
	{
		/**
		 * 转换Item集合
		 */
		public static function convertItems(value:Object, type:String="json"):ArrayCollection
		{
			var items:ArrayCollection=new ArrayCollection();
			if (value != null)
			{
				if (type == TaobaoConstants.JSON)
				{
					if ((value as Array).length > 0)
					{
						for (var i:uint=0; i < (value as Array).length; i++)
						{
							items.addItem(convertItem((value as Array)[i]));
						}
					}
				}
				else
				{
					//TODO
				}
			}
			return items;
		}

		/**
		 * 转换单个Item对象
		 * value:XML 或 JSON
		 */
		public static function convertItem(value:Object, type:String="json", item:TaobaoItem=null):TaobaoItem
		{
			if (item == null)
				item=new TaobaoItem();
			if (value == null)
				return item;
			if (type == TaobaoConstants.XML)
			{
				item=convertXMLToItem(XML(value), item);
			}
			else
			{
				item=convertJSONToItem(value, item);
			}
			return item;
		}

		/**
		 * JSON转换为Item
		 */
		private static function convertJSONToItem(json:Object, item:TaobaoItem):TaobaoItem
		{
			if (json.hasOwnProperty(TaobaoConstants.IID))
			{
				item.iid=json[TaobaoConstants.IID];
			}
			if (json.hasOwnProperty(TaobaoConstants.NUM_IID))
			{
				item.numIid=json[TaobaoConstants.NUM_IID];
			}
			if (json.hasOwnProperty(TaobaoConstants.DETAIL_URL) && !item.clickUrl) //避免将淘宝客商品获取明细时替换了推广URL
			{
				item.clickUrl=json[TaobaoConstants.DETAIL_URL];
			}
			if (json.hasOwnProperty(TaobaoConstants.OUTER_ID))
			{
				item.outerId=json[TaobaoConstants.OUTER_ID];
			}
			if (json.hasOwnProperty(TaobaoConstants.TITLE))
			{
				item.title=json[TaobaoConstants.TITLE];
			}
			if (json.hasOwnProperty(TaobaoConstants.IS_VIRTURAL))
			{
				item.isVirtural=json[TaobaoConstants.IS_VIRTURAL];
			}
			if (json.hasOwnProperty(TaobaoConstants.NICK))
			{
				item.nick=json[TaobaoConstants.NICK];
			}
			if (json.hasOwnProperty(TaobaoConstants.TYPE))
			{
				item.type=json[TaobaoConstants.TYPE];
			}
			if (json.hasOwnProperty(TaobaoConstants.CID))
			{
				item.cid=json[TaobaoConstants.CID];
			}
			if (json.hasOwnProperty(TaobaoConstants.SELLER_CIDS))
			{
				item.sellerCids=json[TaobaoConstants.SELLER_CIDS];
			}
			if (json.hasOwnProperty(TaobaoConstants.PROPS))
			{
				item.props=json[TaobaoConstants.PROPS];
			}
			if (json.hasOwnProperty(TaobaoConstants.DESC))
			{
				item.desc=json[TaobaoConstants.DESC];
			}
			if (json.hasOwnProperty(TaobaoConstants.PIC_PATH))
			{
				item.picUrl=json[TaobaoConstants.PIC_PATH];
			}
			if (json.hasOwnProperty(TaobaoConstants.NUM))
			{
				item.num=json[TaobaoConstants.NUM];
			}
			if (json.hasOwnProperty(TaobaoConstants.VALID_THRU))
			{
				item.validThru=json[TaobaoConstants.VALID_THRU];
			}
			if (json.hasOwnProperty(TaobaoConstants.LIST_TIME))
			{
				item.listTime=json[TaobaoConstants.LIST_TIME];
			}
			if (json.hasOwnProperty(TaobaoConstants.DELIST_TIME))
			{
				item.delistTime=json[TaobaoConstants.DELIST_TIME];
			}
			if (json.hasOwnProperty(TaobaoConstants.STUFF_STATUS))
			{
				item.stuffStatus=json[TaobaoConstants.STUFF_STATUS];
			}
			if (json.hasOwnProperty(TaobaoConstants.LOCATION))
			{
				item.location=LocationConvert.convertLocation(json[TaobaoConstants.LOCATION]);
			}
			if (json.hasOwnProperty(TaobaoConstants.PRICE))
			{
				item.price=json[TaobaoConstants.PRICE];
			}
			if (json.hasOwnProperty(TaobaoConstants.POST_FEE))
			{
				item.postFee=json[TaobaoConstants.POST_FEE];
			}
			if (json.hasOwnProperty(TaobaoConstants.EXPRESS_FEE))
			{
				item.expressFee=json[TaobaoConstants.EXPRESS_FEE];
			}
			if (json.hasOwnProperty(TaobaoConstants.EMS_FEE))
			{
				item.emsFee=json[TaobaoConstants.EMS_FEE];
			}
			if (json.hasOwnProperty(TaobaoConstants.HAS_DISCOUNT))
			{
				item.hasDiscount=json[TaobaoConstants.HAS_DISCOUNT];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.FREIGHT_PAYER))
			{
				item.freightPayer=json[TaobaoConstants.FREIGHT_PAYER];
			}
			if (json.hasOwnProperty(TaobaoConstants.HAS_INVOICE))
			{
				item.hasInvoice=json[TaobaoConstants.HAS_INVOICE];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.HAS_WARRANTY))
			{
				item.hasWarranty=json[TaobaoConstants.HAS_WARRANTY];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.HAS_SHOWCASE))
			{
				item.hasShowcase=json[TaobaoConstants.HAS_SHOWCASE];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.BULK_BASE_NUM))
			{
				item.bulkBaseNum=json[TaobaoConstants.BULK_BASE_NUM];
			}
			if (json.hasOwnProperty(TaobaoConstants.MODIFIED))
			{
				item.modified=json[TaobaoConstants.MODIFIED];
			}
			if (json.hasOwnProperty(TaobaoConstants.INCREMENT))
			{
				item.increment=json[TaobaoConstants.INCREMENT];
			}
			if (json.hasOwnProperty(TaobaoConstants.AUTO_REPOST))
			{
				item.autoRepost=json[TaobaoConstants.AUTO_REPOST];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.APPROVE_STATUS))
			{
				item.approveStatus=json[TaobaoConstants.APPROVE_STATUS];
			}
			if (json.hasOwnProperty(TaobaoConstants.POSTAGE_ID))
			{
				item.postageId=json[TaobaoConstants.POSTAGE_ID];
			}
			if (json.hasOwnProperty(TaobaoConstants.PRODUCT_ID))
			{
				item.productId=json[TaobaoConstants.PRODUCT_ID];
			}
			if (json.hasOwnProperty(TaobaoConstants.AUCTION_POINT))
			{
				item.auctionPoint=json[TaobaoConstants.AUCTION_POINT];
			}
			if (json.hasOwnProperty(TaobaoConstants.PROPERTY_ALIAS))
			{
				item.propertyAlias=json[TaobaoConstants.PROPERTY_ALIAS];
			}
			if (json.hasOwnProperty(TaobaoConstants.ITEM_IMG))
			{
				item.itemImgs=ItemImgConvert.convertItemImgs(TaobaoUtils.getArray(json[TaobaoConstants.ITEM_IMG]));
			}
			if (json.hasOwnProperty(TaobaoConstants.PROP_IMG))
			{
				item.propImgs=PropImgConvert.convertPropImgs(TaobaoUtils.getArray(json[TaobaoConstants.PROP_IMG]));
			}
			if (json.hasOwnProperty(TaobaoConstants.SKU))
			{
				item.skus=SkuConvert.convertSkus(TaobaoUtils.getArray(json[TaobaoConstants.SKU]));
			}
			if (json.hasOwnProperty(TaobaoConstants.INPUT_PIDS))
			{
				item.inputPids=json[TaobaoConstants.INPUT_PIDS];
			}
			if (json.hasOwnProperty(TaobaoConstants.INPUT_STR))
			{
				item.inputStr=json[TaobaoConstants.INPUT_STR];
			}
			if (json.hasOwnProperty(TaobaoConstants.IS_TIMING))
			{
				item.isTiming=json[TaobaoConstants.IS_TIMING];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.IS_TAOBAO))
			{
				item.isTaobao=json[TaobaoConstants.IS_TAOBAO];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.IS_EX))
			{
				item.isEx=json[TaobaoConstants.IS_EX];//已转换Boolean
			}
			if (json.hasOwnProperty(TaobaoConstants.VIDEO))
			{
				item.videos=VideoConvert.convertVideos(TaobaoUtils.getArray(json[TaobaoConstants.VIDEO]));
			}
			return item;
		}



		/**
		 * XML转换为Item
		 */
		private static function convertXMLToItem(value:XML, item:TaobaoItem):TaobaoItem
		{
			return item;
		}
	}
}